package dao

import (
	"time"
)

// 这是 NoticeAdmin 的全局公开dao对象，被service层调用!
var NoticeAdminDao = noticeAdminDao{}

// 通知管理员表
// 这是 notice_admin表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type NoticeAdmin struct {
	Id          int32     `json:"id" form:"id" v:"id" db:"id"`
	NoticeId    int32     `json:"notice_id" form:"notice_id" v:"notice_id" db:"notice_id"`             // 通知ID
	NoticeTitle string    `json:"notice_title" form:"notice_title" v:"notice_title" db:"notice_title"` // 通知标题
	AdminId     int32     `json:"admin_id" form:"admin_id" v:"admin_id" db:"admin_id"`                 // 接收通知的管理员ID
	ReadTime    time.Time `json:"read_time" form:"read_time" v:"read_time" db:"read_time"`             // 阅读时间，如果是NULL则是未读状态
	AddTime     time.Time `json:"add_time" form:"add_time" v:"add_time" db:"add_time"`                 // 创建时间
	UpdateTime  time.Time `json:"update_time" form:"update_time" v:"update_time" db:"update_time"`     // 更新时间
	Deleted     int8      `json:"deleted" form:"deleted" v:"deleted" db:"deleted" gm:"deleted"`        // 逻辑删除

}

// 注意:这是 NoticeAdmin 的私有dao对象，只能在dao层内使用!
type noticeAdminDao struct {
	InsertTemplate func(arg NoticeAdmin) (int64, error)             //插入一条记录
	UpdateTemplate func(arg NoticeAdmin) (int64, error)             //更新一条记录
	DeleteTemplate func(id int64) (int64, error)                    `args:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (NoticeAdmin, error)              `args:"id"` //根据传入的主键获取一条记录
	List           func(arg NoticeAdminList) ([]NoticeAdmin, error) //模糊分页查询
}

/*
// 这是 notice_admin 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type NoticeAdminPostman struct {
id
notice_id
notice_title
admin_id
read_time
add_time
update_time
deleted

}*/

// 这是 notice_admin 表的批量请求参数
type NoticeAdminReq struct {
	List []NoticeAdmin `json:"list" form:"list"`
}

// 这是 noticeAdminDao.List()方法的请求参数
type NoticeAdminList struct {
	Page
}
